import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
// import pxtovw from "postcss-px-to-viewport";
import commonjs from "@rollup/plugin-commonjs";
import { resolve } from "path";
// import pluginGenerator from './src/methods/stylePxToVw'
import Unocss from "unocss/vite";
import { presetUno, presetAttributify, transformerDirectives } from "unocss";

export default defineConfig({
  plugins: [
    uni(),
    Unocss({
      presets: [
        // 基础预设
        presetUno(),
        // 属性化模式支持
      ],
    }),
    commonjs(),
    AutoImport({
      dts: resolve(__dirname, "types/auto-import.d.ts"),
      imports: ["vue", "pinia"],
      vueTemplate: true,
      defaultExportByFilename: true,
      dirs: ["src/methods", "src/config/index*", "src/pinia"],
    }),
    // 组件自动引入
    Components({
      dts: resolve(__dirname, "types/auto-components.d.ts"),
      globs: ["src/components/*/index.vue"],
    }),
  ],
  css: {
    postcss: {
      plugins: [
        // pxtovw({
        //   unitToConvert: 'px', // 要转化的单位
        //   viewportWidth: 750, // UI设计稿的宽度
        //   unitPrecision: 2, // 转换后的精度，即小数点位数
        //   propList: ['*'], // 指定转换的css属性的单位，*代表全部css属性的单位都进行转换
        //   viewportUnit: 'vw', // 指定需要转换成的视窗单位，默认vw
        //   fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位，默认vw
        //   selectorBlackList: ['wrap'], // 指定不转换为视窗单位的类名，
        //   minPixelValue: 1, // 默认值1，小于或等于1px则不进行转换
        //   mediaQuery: true, // 是否在媒体查询的css代码中也进行转换，默认false
        //   replace: true, // 是否转换后直接更换属性值
        //   exclude: [/node_modules/,/uni_modules/], // 设置忽略文件，用正则做目录名匹配
        //   landscape: false
        // }),
      ],
    },
  },
});
